Guided Testing of Concurrent Programs Using Value Schedules

نویسنده

  • Jun Chen
چکیده

Testing concurrent programs remains a difficult task due to the non-deterministic nature of concurrent execution. Many approaches have been proposed to tackle the complexity of uncovering potential concurrency bugs. Static analysis tackles the problem by analyzing a concurrent program looking for situations/patterns that might lead to possible errors during execution. In general, static analysis cannot precisely locate all possible concurrent errors. Dynamic testing examines and controls a program during its execution also looking for situations/patterns that might lead to possible errors during execution. In general, dynamic testing needs to examine all possible execution paths to detect all errors, which is intractable. Motivated by these observation, a new testing technique is developed that uses a collaboration between static analysis and dynamic testing to find the first potential error but using less time and space. In the new collaboration scheme, static analysis and dynamic testing interact iteratively throughout the testing process. Static analysis provides coarse-grained flow-information to guide the dynamic testing through the relevant search space, while dynamic testing collects concrete runtime-information during the guided exploration. The concrete runtime-information provides feedback to the static analysis to refine its analysis, which is then feed forward to provide more precise guidance of the dynamic testing. The new collaborative technique is able to uncover the first concurrency-related bug in a program faster using less storage than the state-of-the-art dynamic testing-tool Java PathFinder. The implementation of the collaborative technique consists of a static-analysis module based on Soot and a dynamic-analysis module based on Java PathFinder.

برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

Efficient Testing of Concurrent Programs with Abstraction-Guided Symbolic Execution

ion-Guided Symbolic Execution Neha Rungta, Eric G Mercer and Willem Visser∗ Dept. of Computer Science, Brigham Young University, Provo, UT 84602, USA ∗SEVEN Networks, 901 Marshall Street, Redwood City, CA 94063, USA Abstract. Exhaustive search techniques such as model checking and Exhaustive search techniques such as model checking and symbolic execution are insufficient to detect errors in con...

متن کامل

Record-Replay Debugging for Concurrent SCOOP Programs

We report on the implementation of a record-replay tool for programs written in SCOOP, an object-oriented programming model for concurrency. The tool enables developers to reproduce the nondeterministic execution of a concurrent program, a necessary prerequisite for debugging and testing. The implementation is based on Choi and Srinivasan’s approach of using logical thread schedules, which repr...

متن کامل

Systematic Ranking of Thread Schedules for Testing Multithreaded Programs

Concurrency is used pervasively in the development of large programs. However, testing concurrent programs is notoriously hard due to the inherent non-determinism. Recently, many different techniques have been proposed to identify concurrency-related bugs early. An effective but expensive approach is model-checking, where all possible schedules of a program are executed to ascertain the absence...

متن کامل

Automated Testing of Multithreaded Programs Using Race-Detection and Flipping

Testing concurrent programs that accept data inputs is notoriously hard because, besides the large number of possible data inputs, nondeterminism results in an exponentially large number of interleavings of concurrent events. We propose a novel testing algorithm for concurrent programs in which our goal is not only to execute all reachable statements of a program, but to detect all possible dat...

متن کامل

Model Checking of Concurrent Algorithms: From Java to C

Concurrent software is difficult to verify. Because the thread schedule is not controlled by the application, testing may miss defects that occur under specific thread schedules. This problem gave rise to software model checking, where the outcome of all possible thread schedules is analyzed. Among existing software model checkers for multi-threaded programs, Java PathFinder for Java bytecode i...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

عنوان ژورنال:

دوره   شماره 

صفحات  -

تاریخ انتشار 2009